Technote 1089

HFS Elucidations Revisited


ñ⁄éü

èÌÇ… 1 ìxÇæÇØÉNÉçÅ[ÉYÇ∑ÇÈ

FCB ÉåÉRÅ[ÉhÇÃè„èëÇ´Ç…ä÷òAÇ∑ÇÈÉgÉâÉuÉãÇñhé~Ç∑ÇÈ

.filename ÇΔǢǧÉtÉ@ÉCÉãñºÇÕãñÇ≥ÇÍǻǢ

DZÇà TECHNOTE (ÉIÉäÉWÉiÉãÇÕÅu FL 6 - HFS Elucidations Åv) Ç≈ÇÕÅAHFS (Hierarchical File System) ÇégópÇ∑ÇÈÇΔÇ´Ç…î≠ê∂Ç∑ÇÈâ¬î\ê´ÇÃdžÇÈÇ¢Ç≠ǬǩÇÃñ‚ëËÇéÊÇËè„Ç∞ÅAìØéûDžǪÇÍÇÁÇÃñ‚ëËÇâÒîÇ∑ÇÈÇΩÇflÇÃï˚ñ@Çê‡ñæÇµÇ‹Ç∑ÅB

DZÇà TECHNOTE ÇÕÅAHFS Ç…ä÷òAÇ∑ÇÈñ‚ëËÇÃÉfÉoÉbÉOÇçsǧÉfÉxÉçÉbÉpÇ…ñóßÇøÇ‹Ç∑ÅBDZÇÍÇÕÅADZÇà TECHNOTE Ç™ç≈èâÇ…äßçsÇ≥ÇÍÇΩÇΔÇ´ÇΔìØólÅAåªç›Ç≈LJèdóvÇ»ñ‚ëËÇ≈Ç∑ÅB

DZDZÇ≈ÇÕÅAéüÇÃñ‚ëËDžǬǢǃè⁄ç◊Ç»ê‡ñæÇçsǢNjÇ∑ÅB

  1. ÉtÉ@ÉCÉãǙǫÇÃÇÊǧDžÉIÅ[ÉvÉìÇ≥ÇÍÅAÇ‹ÇΩÇÕÇ«ÇÃÇÊǧDžÉNÉçÅ[ÉYÇ≥ÇÍÇÈÇ©ÇΔǢǧDZÇΔÇ…íçà”Çï•ǧDZÇΔÇÕîÒèÌÇ…èdóvÇ≈Ç∑ÅBÉtÉ@ÉCÉãÇÉIÅ[ÉvÉìÇ∑ÇÈÇΩÇ—Ç… 2 ìxà»è„ÉNÉçÅ[ÉYÇ∑ÇÈDZÇΔÇÕåµã÷Ç≈Ç∑ÅB

  2. ÉtÉ@ÉCÉãñºÇÃë„ÇÌÇËÇ… .BoutÅA.PrintÅA.Sony ÇÃÇÊǧǻÉhÉâÉCÉoñºÇégÇÌǻǢÇ≈Ç≠ÇæÇ≥Ç¢ÅBǪǧǵǻǢÇΔÅAÉVÉXÉeÉÄÇ™ç¨óêÇ∑ÇÈâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅB
DZÇÍÇÁÇÃñ‚ëËÇÕÅAäÔñ≠Ç»åªè€ÇÃå¥àˆÇ…Ç»ÇÈÇΔìØéûÇ…ÅAÉÜÅ[ÉUÇÃÉgÉâÉuÉãÇÃå¥àˆÇ…LJǻÇËÇ‹Ç∑ÅBDZÇÍÇÁãÜã…ÇÃïsñ@èàóùÇé¿çsǵǃLJÅAïKÇ∏ǵLJÉVÉXÉeÉÄÉGÉâÅ[Ç™î≠ê∂Ç∑ÇÈÇÌÇØÇ≈ÇÕdžÇËÇ‹ÇπÇÒÇ™ÅAèÍçáÇ…ÇÊǡǃÇÕÅAî≠ê∂ǵÇΩç¨óêÇ™ÉVÉXÉeÉÄÉGÉâÅ[ÇÊÇËLJÇÕÇÈǩDžà´Ç¢èÛãµÇèµÇ≠DZÇΔǙdžÇËÇ‹Ç∑ÅB


èÌÇ… 1 ìxÇæÇØÉNÉçÅ[ÉYÇ∑ÇÈ

ÉtÉ@ÉCÉãÇ 2 ìxÉNÉçÅ[ÉYÇ∑ÇÈÇΔÅAÉfÉBÉXÉNè„ÇÃÉtÉ@ÉCÉãÉVÉXÉeÉÄÇîjâÛǵǃǵNjǧâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅBÉtÉ@ÉCÉãÉVÉXÉeÉÄÇ™åªç›ÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇ÷ÇÃÉAÉNÉZÉXÉpÉXÇäÑÇËìñǃÇÈï˚ñ@Çê≥ǵÇ≠óùâǵǃǢǻǢÇΔÅAÉtÉ@ÉCÉãÇÃÉIÅ[ÉvÉìÇΔÉNÉçÅ[ÉYÇ…ä÷ǵǃïsçÏñ@Ç»èàóùÇçsǡǃǵNjǧDZÇΔLJdžÇËÇ‹Ç∑ÅBDZÇà TECHNOTE Ç≈ÇÕÅAÉtÉ@ÉCÉãÇÃÉIÅ[ÉvÉìÇΔÉNÉçÅ[ÉYÇ…ä÷ǵǃè\ï™Ç…íçà”Çï•ǧDZÇΔǙǻÇ∫ïKóvÇ»ÇÃǩDžǬǢǃê‡ñæÇµÇ‹Ç∑ÅB

Open åƒÇ—èoǵÇéÛÇØéÊÇÈÇΔÇ´ÅAFile Manager ÇÕÉpÉâÉÅÅ[É^ÉuÉçÉbÉNÇÃå`Ç≈ìnÇ≥ÇÍÇΩÉpÉâÉÅÅ[É^Çå©ÇƒÅAåªç›ÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇ…ëŒÇ∑ÇÈêVǵǢÉAÉNÉZÉXÉpÉXÇçÏê¨ÇµÇ‹Ç∑ÅBÉAÉNÉZÉXÉpÉXÇÕÅAFile Manager Ç™èëÇ´çûÇ‹ÇÍÇΩÉfÅ[É^ÇëóêMÇ∑ÇÈèÍèäÇΔÅAǪÇÃÉtÉ@ÉCÉãÇ©ÇÁì«Ç›çûÇÒÇæÉfÅ[É^Çäiî[Ç∑ÇÈèÍèäÇí«ê’Ç∑ÇÈï˚ñ@ÇΔǢǶNjÇ∑ÅBÉAÉNÉZÉXÉpÉXÇΔÇÕÅAÇ‹Ç≥Ç…éüÇÃÇÊǧǻLJÇÃÇ≈Ç∑ÅB

  1. ÉtÉ@ÉCÉãÉVÉXÉeÉÄÇ™ÉfÅ[É^ÇÃì«Ç›èëÇ´Ç…égǧÉoÉbÉtÉ@ÅB
  2. ÉtÉ@ÉCÉãÇ™ÉfÉBÉXÉNè„Ç…äiî[Ç≥ÇÍÇÈï˚ñ@ÇãLèqÇ∑ÇÈÉtÉ@ÉCÉãÉRÉìÉgÉçÅ[ÉãÉuÉçÉbÉN (FCB)ÅB
éüÇÃÇÊǧǻåƒÇ—èoǵÇÕÅA
ErrStuff = FSpOpenDF (fsspec, permission, firstRefNum);
ÉoÉbÉtÉ@Ç≈džÇËÅAǩǬ FCB ÉoÉbÉtÉ@ì‡ÇÃÉtÉ@ÉCÉãÉRÉìÉgÉçÅ[ÉãÉuÉçÉbÉN (FCB) ÇΔǵǃÇÃÉAÉNÉZÉXÉpÉXÇçÏê¨ÇµÇ‹Ç∑ÅBÅuFCB ÉoÉbÉtÉ@ÅvÇΔǢǧópåÍÇÕëÂïîï™ÇÃÉ}ÉjÉÖÉAÉãÇ≈égÇÌÇÍǃǢNjÇ∑Ç™ÅADZÇÍÇÕé¿ç€Ç…ÇÕÉoÉbÉtÉ@ÇΔǢǧÇÊÇËLJîzóÒÇÃÇÊǧDžìÆçÏǵNjÇ∑ÅBǵǩǵÅAç¨óêÇîÇØÇÈÇΩÇflÅADZÇà TECHNOTE Ç≈ÇÕÅAè]óàí ÇËÅuFCB îzóÒÅvÇ≈ÇÕÇ»Ç≠ÅuFCB ÉoÉbÉtÉ@ÅvÇΔǢǧópåÍÇégǢNjÇ∑ÅB

íçà”:
DZDZÇ≈é¶Ç∑ÉTÉìÉvÉãÇÕê‡ñæÇÃÇΩÇflÇæÇØÇ…Ç†Ç∞ǃdžÇÈÇΔóùâǵǃÇ≠ÇæÇ≥Ç¢ÅBDZÇÃÉTÉìÉvÉãÇé¿ç€Ç…égópÇ∑ÇÈÇΔÅAè´óàÇÃÉVÉXÉeÉÄÉ\ÉtÉgÉEÉFÉAÇΔÇÃä‘Ç≈å›ä∑ê´ÇÃñ‚ëËÇ™î≠ê∂Ç∑ÇÈèÍçáǙdžÇËÇ‹Ç∑ÅB


FCBSPtr ÇÕÅAçƒîzíuÇ≈ǴǻǢÉuÉçÉbÉNÇÃÉAÉhÉåÉXÇï€éùÇ∑ÇÈâ∫à ÉÅÉÇÉäÉOÉçÅ[ÉoÉã (0x034E) Ç≈Ç∑ÅBDZÇÃÉuÉçÉbÉNÇÕ FCB ÉoÉbÉtÉ@Ç≈džÇËÅAÉuÉçÉbÉNí∑Çäiî[Ç∑ÇÈ 2 ÉoÉCÉgÇÃÉwÉbÉ_ÇΔÅAǪÇÍÇ…ë±Ç≠ FCB ÉåÉRÅ[ÉhǪÇÃLJÇÃÇ©ÇÁç\ê¨Ç≥ÇÍǃǢNjÇ∑ÅBDZÇÃÉåÉRÅ[ÉhÇÕå≈íËí∑Ç≈džÇËÅAÉIÅ[ÉvÉìÉtÉ@ÉCÉãÇ…ä÷Ç∑ÇÈè⁄ç◊Ç»èÓïÒÇä‹ÇÒÇ≈ǢNjÇ∑ÅBÉLÉÖÅ[ÇÃç\ë¢ÇÕéüÇÃÇÊǧDžê}éÆâªÇ≈Ç´Ç‹Ç∑ÅB

ê}1

DZÇÃê}Ç©ÇÁLJÇÌÇ©ÇÈÇÊǧDžÅAîCà”ÇÃÉåÉRÅ[ÉhÇÕÅAǪÇÍÇÊÇËLJëODždžÇÈ FCB ÉåÉRÅ[ÉhÇÃí∑Ç≥ÇÉuÉçÉbÉNÇÃêÊì™Ç…â¡éZǵÅA2 ÉoÉCÉgÇÃÉwÉbÉ_Ç…ëŒâûÇ∑ÇÈ 2 (ǬNjÇËÅAÉåÉRÅ[Éhñ{ëÃÇÃÉIÉtÉZÉbÉgÇï\Ç∑) Çâ¡éZÇ∑ÇÈDZÇΔÇ…ÇÊǡǃéÊìæÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉuÉçÉbÉNÇÃÉTÉCÉYÅAǬNjÇËìØéûÇ…ÉIÅ[ÉvÉìÇ≈Ç´ÇÈÉtÉ@ÉCÉãÇÃêîÇÕÅAÉVÉXÉeÉÄãNìÆéûÇ…åàíËÇ≥ÇÍÅAǪÇÃå„ÇÕïKóvÇ…âûÇ∂ǃägí£Ç≥ÇÍÇ‹Ç∑ÅBëOèqÇà fsspec Ç…ÇÊǡǃéQèΔÇ≥ÇÍÇÈÉtÉ@ÉCÉãÇÉIÅ[ÉvÉìÇ∑ÇÈåƒÇ—èoǵÇÕÅAfirstRefNum Ç…ÉtÉ@ÉCÉãéQèΔî‘çÜ (ǪÇÃÉtÉ@ÉCÉãÇ÷ÇÃÉAÉNÉZÉXÉpÉXÇéQèΔÇ∑ÇÈ) Çï‘ǵNjÇ∑ÅBDZÇÃî‘çÜÇÕÅADZÇÍà»ç~ÅAǪÇÃÉtÉ@ÉCÉãÇ…ÉAÉNÉZÉXÇ∑ÇÈÇΩÇflÇ…égópÇ≥ÇÍÇ‹Ç∑ÅBFile Manager ÇÕÅAFCB ÉoÉbÉtÉ@Ç÷ÇÃÉIÉtÉZÉbÉgÇéQèΔî‘çÜ (RefNum) ÇΔǵǃìnǵNjÇ∑ÅBDZÇÃÉIÉtÉZÉbÉgÇÕÅAÉLÉÖÅ[ÇÃêÊì™Ç©ÇÁÉoÉbÉtÉ@ì‡Ç…džÇÈǪÇà FCB ÉåÉRÅ[ÉhÇ‹Ç≈ÇÃÉoÉCÉgêîÇ≈Ç∑ÅBǪÇà FCB ÉåÉRÅ[ÉhÇÕÅAÉIÅ[ÉvÉìÇ≥ÇÍÇΩÉtÉ@ÉCÉãÇãLèqÇ∑ÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅBÇΩÇΔǶnjÅARefNum ÇΔǵǃìnÇ≥ÇÍÇΩêîílÇ™ $1D8 Ç≈džÇÈÇΔÇ∑ÇÈÇΔÅADZÇÍÇÕÅAǪÇà FCB ÉåÉRÅ[ÉhÇ™ FCB ÉuÉçÉbÉNÇà $1D8 ÉoÉCÉgñ⁄DždžÇÈDZÇΔÇà”ñ°ÇµÇ‹Ç∑ÅB

égópíÜÇÃÉåÉRÅ[ÉhÇΔ RefNum ÇΔÇÃä÷åWÇÕÅAéüÇÃÇÊǧDžê}éÆâªÇ≈Ç´Ç‹Ç∑ÅB

ê}2

Base ÇÕÅAíPèÉÇ… FCB ÉoÉbÉtÉ@Ç≈džÇÈçƒîzíuÇ≈ǴǻǢÉuÉçÉbÉNÇÃÉAÉhÉåÉXÇï\ǵNjÇ∑ÅBFCBSPtr ÇÕDZÇÍÇéwǵǃǢNjÇ∑ÅBRefNum ($1D8 ÇÃÇÊǧǻêîíl) ÇÕÅABase Ç…â¡éZÇ≥ÇÍÅAÉuÉçÉbÉNì‡ÇÃÉAÉhÉåÉXÇï\ǵNjÇ∑ÅBDZÇÃÉAÉhÉåÉXÇÕÅAÉtÉ@ÉCÉãÉVÉXÉeÉÄÇ™ÉIÅ[ÉvÉìÉtÉ@ÉCÉãÇÃì«Ç›èëÇ´Ç…égópÇ∑ÇÈÇΩÇflÅAPBRead Ç®ÇÊÇ— PBWrite åƒÇ—èoǵDžÇÕDZÇà RefNum ÇìnÇ∑ïKóvǙdžÇËÇ‹Ç∑ÅBDZÇÃÇÊǧDžÅARefNum ÇÕÉoÉbÉtÉ@Ç÷ÇÃÉIÉtÉZÉbÉgÇ…Ç∑ǨNjÇπÇÒÅB

éüÇ…ÅAäÎåØÇî∫ǧâºëzìIÇ»ÉVÅ[ÉPÉìÉXÇé¿çsǵǃǛǃÅAFCB ÉoÉbÉtÉ@ì‡ÇÃëŒè€ÇΔÇ»ÇÈÉåÉRÅ[ÉhÇ…âΩÇ™ãNDZÇÈÇ©Çå©ÇƒÇ›Ç‹ÇµÇÂǧÅBéüÇÃÇÊǧǻÉVÅ[ÉPÉìÉXÇèáÇ…é¿çsÇ∑ÇÈÇΔǵNjÇ∑ÅB
ErrStuff = FSpOpenDF (fsspec, permission, firstRefNum);
ErrStuff = FSClose ( firstRefNum );
ErrStuff = FSpOpenDF (secondFileSpec, permission, secondRefNum);
ErrStuff = FSClose ( firstRefNum ); {ïsê≥Ç»ÉtÉ@ÉCÉãÇ™ÉNÉçÅ[ÉYÇ≥ÇÍÇΩ!!!}
{è„ÇÃçsÇÕÅA'FirstFile' Ç≈ÇÕÇ»Ç≠ 'SecondFile' ÇÉNÉçÅ[ÉYÇ∑ÇÈÅB'FirstFile' ÇÕä˘Ç…ÉNÉçÅ[ÉYÇ≥ÇÍǃǢÇÈ }
èàóùÇé¿çsÇ∑ÇÈëOÅA$1D8 ÇÃÉåÉRÅ[ÉhÇÕégópÇ≥ÇÍǃǢNjÇπÇÒÅB

ê}3

éüÇÃåƒÇ—èoǵÇé¿çsÇ∑ÇÈÇΔÅA
ErrStuff = FSpOpenDF (firstFileSpec, permission, firstRefNum);
firstRefNum = $1D8 ÇΔÇ»ÇËÅAÉåÉRÅ[ÉhÇÕégópíÜÇ…Ç»ÇËÇ‹Ç∑ÅB

ê}4

éüÇÃåƒÇ—èoǵÇé¿çsÇ∑ÇÈÇΔÅA
ErrStuff = FSClose (firstRefNum);
firstRefNum ÇÕ $1D8 Ç≈Ç∑Ç™ÅAFCB ÉåÉRÅ[ÉhÇÕégópÇ≥ÇÍÇ»Ç≠Ç»ÇËÇ‹Ç∑ÅB

ê}4

éüÇÃåƒÇ—èoǵÇé¿çsÇ∑ÇÈÇΔÅA
ErrStuff = FSpOpenDF (secondFileSpec, permission, secondRefNum);
SecondRefNum = $1D8ÅAFirstRefNum = $1D8 ÇΔÇ»ÇËÅAÉåÉRÅ[ÉhÇÕçƒégópÇ≥ÇÍÇ‹Ç∑ÅB

ê}5

éüÇÃåƒÇ—èoǵÇé¿çsÇ∑ÇÈÇΔÅA
ErrStuff = FSClose (firstRefNum);
firstRefNum = $1D8ÅAsecondRefNum = $1D8 ÇΔÇ»ÇËÅAìØéûÇ… FCB ÉoÉbÉtÉ@ÇÃóvëfÇÕÉNÉäÉAÇ≥ÇÍÇ‹Ç∑ÅBDZÇÃèÛãµÇÕÅAfirstFile Ç™ä˘Ç…ÉNÉçÅ[ÉYÇ≥ÇÍǃǢÇÈèÍçáDžLJî≠ê∂ǵÅAé¿ç€Ç…ÇÕ secondFile Ç™ÉNÉçÅ[ÉYÇ≥ÇÍÇ‹Ç∑ÅB

ê}6

íçà”:
2 î‘ñ⁄Çà Close Ç≈ÇÕÅAå≥Çà RefNum Ç™égópÇ≥ÇÍÇ‹Ç∑ÅB2 î‘ñ⁄Çà Close Ç≈LJÉtÉ@ÉCÉãÇÕÉNÉçÅ[ÉYÇ≥ÇÍÅAéñé¿ÅAé¿çsåãâ ÇΔǵǃ noErr Ç™ï‘Ç≥ÇÍÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅBǪÇÃå„ secondRefNum Ç…ÉAÉNÉZÉXÇ∑ÇÈÇΔÅAÉtÉ@ÉCÉã 'secondFile' ÇÕä˘Ç…ÉNÉçÅ[ÉYÇ≥ÇÍǃǢÇÈÇΩÇflÉGÉâÅ[Ç™ï‘Ç≥ÇÍÇ‹Ç∑ÅBÉtÉ@ÉCÉãÉRÉìÉgÉçÅ[ÉãÉuÉçÉbÉN (FCB) ÇÕçƒégópÇ≥ÇÍÅAǪÇÍÇÁÇÕÉIÉtÉZÉbÉgÇ≈džÇÈÇΩÇflÅA2 ǬÇÃàŸÇ»ÇÈÉtÉ@ÉCÉãÇ…ëŒÇµÇƒìØÇ∂ÉtÉ@ÉCÉã RefNum Ç™éÊìæÇ≥ÇÍÇÈâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅBDZÇÃó·Ç≈ÇÕÅA'secondFile' ÇÉIÅ[ÉvÉìÇ∑ÇÈëOÇ… 'firstFile' Ç™ÉNÉçÅ[ÉYÇ≥ÇÍÅAìØÇ∂ FCB ÉåÉRÅ[ÉhÇ™ 'secondFile' ÇÃÇΩÇflÇ…çƒégópÇ≥ÇÍǃǢÇÈÇΩÇflÅAfirstRefNum == secondRefNum ÇΔÇ»ÇËÇ‹Ç∑ÅB


å≥Çà RefNum Ççƒégópǵǃ 1 ǬÇÃÉtÉ@ÉCÉãÇ 2 ìxÉNÉçÅ[ÉYÇ∑ÇÈèÍçáÇ…ÇÕÅAÇ¢Ç≠ǬǩÇÃñÔâÓÇ»ñ‚ëËÇ™î≠ê∂Ç∑ÇÈâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅBí èÌÇÃÉvÉçÉOÉâÉ~ÉìÉOçÏñ@Ç≈ÇÕÅAÉGÉâÅ[ÉnÉìÉhÉâÇ‹ÇΩÇÕÉNÉäÅ[ÉìÉAÉbÉvÉãÅ[É`ÉìÇópà”ǵÅAàÍïîÇÃÉtÉ@ÉCÉãÇ™ä˘Ç…ÉNÉçÅ[ÉYÇ≥ÇÍǃǢÇÈèÍçáÇ≈LJÅAÉvÉçÉOÉâÉÄÇ™çÏê¨ÇµÇΩÉtÉ@ÉCÉãÇÉ`ÉFÉbÉNǵǃÅAǪÇÍÇÁÇ∑Ç◊ǃÇÉNÉçÅ[ÉYÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBFCB ÇÃóvëfÇ™çƒégópÇ≥ÇÍǃǢǻǢÇΔÅAClose ÇÕä˙ë“í ÇËÇà fnOpnErr Çï‘ǵNjÇ∑ÅBàÍï˚ÅAFCB Ç™çƒégópÇ≥ÇÍǃǢÇÈÇΔÅAClose ÇÕïsê≥Ç»ÉtÉ@ÉCÉãÇÉNÉçÅ[ÉYǵǃǵNjǧDZÇΔǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÕîÒèÌÇ…äÎåØÇ»èÛãµÇ≈Ç∑ÅB

ì¡Ç…ñÔâÓÇ»ó·ÇΔǵǃÅAÉvÉçÉOÉâÉÄÇ™ÉtÉ@ÉCÉãÇÉNÉçÅ[ÉYǵÇÊǧÇΔǵǃǢÇÈÇΔÇ´Ç…ÉÜÅ[ÉUÇ™ HFS ÉtÉçÉbÉsÅ[ÉfÉBÉXÉNÇë}ì¸Ç∑ÇÈÇΔâΩÇ™ãNDZÇÈÇ©ÇçlǶǃǛNjǵÇÂǧÅBFCB ÇÕÅAǪÇà HFS ÉfÉBÉXÉNè„ÇÃÉJÉ^ÉçÉOÉtÉ@ÉCÉãÇÃÇΩÇflÇ…çƒégópÇ≥ÇÍÇ‹Ç∑ÅBÉvÉçÉOÉâÉÄÇ…ÅAǪÇÍÇ™çÏê¨ÇµÇΩÉtÉ@ÉCÉãÇ∑Ç◊ǃÇÉNÉçÅ[ÉYÇ∑ÇÈÉWÉFÉlÉäÉbÉNÇ»ÉGÉâÅ[ÉnÉìÉhÉâÇ™ópà”Ç≥ÇÍǃǢÇÈèÍçáÅAåÎǡǃÅuǪÇÃÅvÉtÉ@ÉCÉãÇLJǧàÍìxÉNÉçÅ[ÉYǵǃǵNjǢNjÇ∑ÅBÅuǪÇÃÅvÉtÉ@ÉCÉãÇ™Ç‹ÇæÉIÅ[ÉvÉìǵǃǢÇÈÇΔå©Ç»ÇµÇΩèÍçáÅAÉvÉçÉOÉâÉÄÇÕǪÇÃÉtÉ@ÉCÉãÇÃÉNÉçÅ[ÉYÇé¿çsǵÅAHFS ÉfÉBÉXÉNè„ÇÃÉJÉ^ÉçÉOÉtÉ@ÉCÉãÇ™ÉNÉçÅ[ÉYÇ≥ÇÍǃǵNjǢNjÇ∑ÅBDZÇÃèÛãµÇÕÅAÉfÉBÉXÉNÇ…ÇΔǡǃívñΩìIǻLJÇÃÇΔÇ»ÇËÇ‹Ç∑ÅBÇΔǢǧÇÃLJÅAÉJÉ^ÉçÉOÉtÉ@ÉCÉãÇ™ñµèÇǵÇΩèÛë‘Ç≈ÉNÉçÅ[ÉYÇ≥ÇÍÇÈDZÇΔÇ…Ç»ÇÈÇΩÇflÇ≈Ç∑ÅBǪÇÃåãâ ÅADZÇÃÉfÉBÉXÉNÇÕçƒÉtÉHÅ[É}ÉbÉgÇïKóvÇΔÇ∑ÇÈïsê≥Ç»ÉfÉBÉXÉNÇΔǢǧDZÇΔDžǻǡǃǵNjǢNjÇ∑ÅB

FCB ÉåÉRÅ[ÉhÇÃè„èëÇ´Ç…ä÷òAÇ∑ÇÈÉgÉâÉuÉãÇñhé~Ç∑ÇÈ

îÒèÌÇ…ÉVÉìÉvÉãÇ»ÉeÉNÉjÉbÉNÇΔǵǃÅAÉNÉçÅ[ÉYÇçsǧÇΩÇ—Ç… RefNum ÇíPèÉÇ…ÉNÉäÉAÇ∑ÇÈÇΔǢǧï˚ñ@ǙdžÇËÇ‹Ç∑ÅBÉNÉçÅ[ÉYÇçsǧÇΩÇ—Ç…ÉvÉçÉOÉâÉÄÇ™égópǵǃǢÇΩïœêîÇÉNÉäÉAÇ∑ÇÍÇŒÅAǪÇÃÉvÉçÉOÉâÉÄÇ≈ÇÕ RefNum ÇçƒégópÇ≈Ç´Ç»Ç≠Ç»ÇËÇ‹Ç∑ÅBéüÇ…ÅADZÇÃÉeÉNÉjÉbÉNÇÃó·Çé¶ÇµÇ‹Ç∑ÅB

ErrStuff = FSpOpenDF (firstFileSpec, permission, firstRefNum);
ErrStuff = FSClose (firstRefNum);
firstRefNum = 0; { DZÇÃÉtÉ@ÉCÉãÇÉNÉçÅ[ÉYǵÅArefnum ÇÕÉNÉäÉAÇ≥ÇÍÇÈ }
ErrStuff = FSpOpenDF (secondFileSpec, permission, secondRefNum);
ErrStuff = FSClose (firstRefNum); { ÉGÉâÅ[Çï‘Ç∑ }
DZǧÇ∑ÇÍÇŒÅA2 î‘ñ⁄Çà Close ÇÕÉGÉâÅ[Çï‘ǵNjÇ∑ÅBDZÇÃèÍçáÅA2 î‘ñ⁄Çà Close ÇÕ RefNum = 0 ÇÉNÉçÅ[ÉYǵÇÊǧÇΔǵNjÇ∑Ç™ÅArfNumErr Çï‘ǵÅAì¡Ç…îÌäQÇó^ǶÇÈDZÇΔÇÕdžÇËÇ‹ÇπÇÒÅB

íçà”:
ïKÇ∏ 0 ÇégǧÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅBêÊì™Çà FCB ÉGÉìÉgÉäÇÕÅAFCB ÉoÉbÉtÉ@í∑Çäiî[ǵÇΩÉèÅ[ÉhÇÃéüDždžÇÈÇΩÇflÅA0 Ç™óLå¯Ç» RefNum Ç…Ç»ÇÈDZÇΔÇÕdžÇËÇ‹ÇπÇÒÅBÇΩÇæÇµÅADZÇà 0 ÇΔÅAResource Manager Ç™ÉVÉXÉeÉÄÉtÉ@ÉCÉãÇï\Ç∑ÇΩÇflÇ…égǧ 0 ÇΔÇç¨ìØÇµÇ»Ç¢Ç≈Ç≠ÇæÇ≥Ç¢ÅB


DZÇÃÇÊǧDžÅAÉGÉâÅ[ÉnÉìÉhÉâÇ™ÉIÅ[ÉvÉìÉtÉ@ÉCÉãÇÇ≈Ç´ÇÈǩǨÇËÉNÉäÅ[ÉìÉAÉbÉvÇ∑ÇÈÇΔÅAä˘Ç…ÉNÉçÅ[ÉYÇ≥ÇÍǃǢÇÈÉtÉ@ÉCÉãÇ…ëŒÇµÇƒÇÕÉGÉâÅ[Ç™ï‘Ç≥ÇÍÇÈÇΩÇflÅAä˘ímÇÃÉtÉ@ÉCÉãÇÇ∑Ç◊ǃämé¿Ç…ÉNÉçÅ[ÉYÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÇΩÇæÇµÅADZÇÃèàóùÇÕé©ìÆìIÇ…é¿çsÇ≥ÇÍÇÈÇÌÇØÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBÉvÉçÉOÉâÉ}é©êgÇ™èÌÇ…ÉtÉ@ÉCÉãÇÃÉIÅ[ÉvÉìÇΔÉNÉçÅ[ÉYÇ…è\ï™Ç»íçà”Çï•ǧïKóvǙdžÇËÇ‹Ç∑ÅBÇΩÇΔǶnjÅA10 å¬ÇÃÉtÉ@ÉCÉãÇÃÉVÅ[ÉPÉìÉXÇÉIÅ[ÉvÉìǵǃǢÇÈç≈íÜÇ…ÉGÉâÅ[ÇéÛÇØéÊÇ¡ÇΩèÍçáÅAñ‚ëËÇÕǩǻÇËï°éGǻLJÇÃÇ…Ç»ÇËÇ‹Ç∑ÅBÉNÉçÅ[ÉYÇçsǧÇΩÇ—Ç…äiî[Ç≥ÇÍǃǢÇÈ RefNum ÇíPèÉÇ…ÉNÉäÉAÇµÇƒÇ®ÇØÇŒÅAÇ«ÇÃÉtÉ@ÉCÉãÇ™ÉIÅ[ÉvÉìǵǃǢǃÅAÇ«ÇÃÉtÉ@ÉCÉãÇ™ÉNÉçÅ[ÉYÇ≥ÇÍǃǢÇÈÇ©ÇÉ`ÉFÉbÉNÇ∑ÇÈÇΔǢǧï°éGÇ»èàóùÇîÇØÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

.filename ÇΔǢǧÉtÉ@ÉCÉãñºÇÕãñÇ≥ÇÍǻǢ

FSOpenÅAPBHOpenÅAÇ®ÇÊÇ— PBOpen ǻǫÇÃï]îªÇÃà´Ç¢ Open åƒÇ—èoǵÇégǧèÍçáÇÕÅAÉtÉ@ÉCÉãñºÇΔÉhÉâÉCÉoñºÇΔÇ™ÉRÉìÉtÉäÉNÉgÇãNDZÇ∑êˆç›ìIÇ»â¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅBÉtÉ@ÉCÉãñºÇ™ .BoutÅA.PrintÅAÇ‹ÇΩÇÕ .Sony ǻǫÇÃèÍçáÅAé¿çsǵÇΩåƒÇ—èoǵÇÕÉtÉ@ÉCÉãÇÃë„ÇÌÇËÇ…ëŒâûÇ∑ÇÈÉhÉâÉCÉoÇÉIÅ[ÉvÉìǵǃǵNjǢNjÇ∑ÅBÉhÉâÉCÉoÇÃï˚Ç™ÉtÉ@ÉCÉãÇÊÇËLJóDêÊèáà Ç™çÇÇ¢ÇΩÇflÅAèÌÇ…ÉtÉ@ÉCÉãÇÊÇËLJëOÇ…ìØÇ∂ñºëOÇÃÉhÉâÉCÉoÇ™ÉIÅ[ÉvÉìÇ≥ÇÍÇ‹Ç∑ÅBǬNjÇËÅADZÇÃéÌÇÃÉtÉ@ÉCÉãÇÉIÅ[ÉvÉìÇ∑ÇÈÇΔÇ´Ç…ÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ÉGÉâÅ[ÇéÛÇØéÊÇÈÇΔǢǧDZÇΔÇ≈Ç∑ÅBÇ‹ÇΩǻǮà´Ç¢Ç±ÇΔÇ…ÅAåƒÇ—èoǵǩÇÁÉhÉâÉCÉoÇà RefNum Ç™ï‘Ç≥ÇÍǃǵNjǢNjÇ∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ÉtÉ@ÉCÉãÇÉIÅ[ÉvÉìǵÇÊǧÇΔǵǃé¿çsǵÇΩåƒÇ—èoǵǙÅAé¿ç€Ç…ÇÕÉhÉâÉCÉoÇÉIÅ[ÉvÉìÇ∑ÇÈåƒÇ—èoǵDžǻǡǃǵNjǢNjÇ∑ÅBÉvÉçÉOÉâÉÄǙDZÇÃÉAÉNÉZÉXÉpÉXÇÉtÉ@ÉCÉãÇà RefNum ÇΔǵǃégópÇ∑ÇÈÇΔÅAîÒèÌÇ…äÔñ≠Ç»åªè€Ç™î≠ê∂Ç∑ÇÈDZÇΔǙdžÇËÇ‹Ç∑ÅBÇΩÇΔǶnjÅA.Sony Ç™ÉIÅ[ÉvÉìÇ≥ÇÍǃǢÇÈèÍçáÅAÉtÉ@ÉCÉãÇà RefNum ÇÃë„ÇÌÇËÇ…ÅASony ÉhÉâÉCÉoÇà RefNum Ç™ìnÇ≥ÇÍÇ‹Ç∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìǙǪÇà RefNum Çégǡǃ Write åƒÇ—èoǵÇé¿çsÇ∑ÇÈÇΔÅAǪÇÍÇÕé¿ç€Ç…ÇÕÉhÉâÉCÉoåƒÇ—èoǵDžǻÇËÅAǪÇÃéûì_Ç≈ÇΩÇ‹ÇΩÇ‹ÉpÉâÉÅÅ[É^ÉuÉçÉbÉNDždžǡÇΩÉpÉâÉÅÅ[É^Ç™égÇÌÇÍÇ‹Ç∑ÅBDZÇÃÇÊǧǻèàóùÇé¿çsÇ∑ÇÈÇΔÅAÉfÉBÉXÉNÇÕêVǵǢëŒè€ÇâiâìÇ…åüçıǵë±ÇØÇ‹Ç∑ÅBÉvÉçÉOÉâÉÄÇ™ÉtÉ@ÉCÉãÇçÏê¨Ç∑ÇÈÇΔÇ´ÇÕÅAñºëOÇ™ '.' Ç≈énÇ‹ÇÈÉtÉ@ÉCÉãÇÃçÏê¨Çãñâ¬ÇµÇ»Ç¢ÇÊǧDžǵǃÇ≠ÇæÇ≥Ç¢ÅB

èdóv:
FSOpenDF Ç‚ PBHOpenDF ÇÃÇÊǧǻêVǵǢ Open åƒÇ—èoǵÇégǧÇΔÇ´Ç…ÇÕÅADZÇÃÇÊǧǻñ‚ëËÇÕî≠ê∂ǵNjÇπÇÒÅBDZÇÃÇΩÇflÅAFSOpen ÇÃë„ÇÌÇËDžDZÇÍÇÁÇÃêVǵǢ Open åƒÇ—èoǵÇégǧDZÇΔÇã≠Ç≠Ç®ä©ÇflǵNjÇ∑ÅB

éQçlï∂å£
Inside Macintosh: Files, Ch 2, File Manager
Technical Note FL22 - HFS Ruminations

çXêVì˙: 1996 îN 12 åé 20 ì˙